package com.dfec.book.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dfec.book.entity.BorrowRecordEntity;
import com.dfec.book.util.PageUtils;

import java.util.List;

/**
 * 借阅记录服务接口
 * @author tangrg
 * @email 1446232546@qq.com
 * @date 2025-06-2025/6/19 09:47:37
 */
public interface BorrowRecordService extends IService<BorrowRecordEntity> {


    /**
     * 分页查询借阅记录
     *
     * @param borrowRecord  借阅信息
     * @return 分页对象
     */
    PageUtils getRecordsByPage(BorrowRecordEntity borrowRecord);

    /**
     * 借阅图书
     *
     * @param record 借阅记录实体对象
     * @return 借阅结果
     * @throws RuntimeException 如果图书不存在或已被借出
     */
    boolean borrowBook(BorrowRecordEntity record);

    /**
     * 归还图书
     *
     * @param recordId 借阅记录ID
     * @return 归还结果
     * @throws RuntimeException 如果记录不存在或图书已归还
     */
    boolean returnBook(Integer recordId);

    /**
     * 获取借阅人的所有借阅记录
     *
     * @param borrower 借阅人姓名
     * @return 借阅记录列表
     */
    List<BorrowRecordEntity> getRecordsByBorrower(String borrower);

    /**
     * 获取某图书的借阅记录
     *
     * @param bookId 图书ID
     * @return 借阅记录列表
     */
    List<BorrowRecordEntity> getRecordsByBook(Integer bookId);

    /**
     * 获取当前借出未归还的记录
     *
     * @return 未归还的借阅记录列表
     */
    List<BorrowRecordEntity> getUnreturnedRecords();



    /**
     * 查询逾期未还的借阅记录
     *
     * @return 逾期未还的借阅记录列表（超过30天未还）
     */
    List<BorrowRecordEntity> getOverdueRecords();
}